//
//  NSDate+Extension.swift
//  123
//
//  Created by pangjiaxing on 16/1/7.
//  Copyright © 2016年 pangjiaxing. All rights reserved.
//

import UIKit

extension NSDate {
    
    class func sinaDate(string: String?) -> NSDate? {
        
        if string == nil {
            return nil
        }
        
        // Tue May 31 17:46:55 +0800 2011
        let dt = APPLEDateFormatter.sharedFormatter
        // 指定时间格式字符串
        dt.dateFormat = "EEE MMM dd HH:mm:ss z yyyy"
        // 将字符串转成 NSDate
        let result = dt.dateFromString(string!)
        // 返回结果
        return result
    }
    /// 返回新浪微博的时间字符串
    var sinaDateDescription: String? {
        let dt = APPLEDateFormatter.sharedFormatter
        
        // 取到当前的日历对象
        let calendar = NSCalendar.currentCalendar()
        // 当前时间
        let currentDate = NSDate()
        
        if isDateInThisYear(self) {
            // 是否是今天
            if calendar.isDateInToday(self) {
                // 拿着当前的时间，减去微博的时间，如果小于60秒，就代表1分钟之内
                let result = currentDate.timeIntervalSinceDate(self)
                
                if result < 60 {
                    return "刚刚"
                }else if result < 60 * 60 {
                    return "\(Int(result / 60))分钟前"
                }else{
                    return "\(Int(result / 60 / 60))小时前"
                }
            }else if calendar.isDateInYesterday(self) {
                dt.dateFormat = "昨天 HH:mm"
            }else {
                dt.dateFormat = "MM-dd HH:mm"
            }
        }else {
            // 2014-10-15 08:19
            dt.dateFormat = "yyyy-MM-dd HH:mm"
        }
        return  dt.stringFromDate(self)
    }
    
    /// 判断当前时间与传入的时间是否是同一年
    ///
    /// - parameter date: 目标时间
    ///
    /// - returns: <#return value description#>
    private func isDateInThisYear(date: NSDate) -> Bool {
        
        // 获取到当前时间
        let nowDate = NSDate()
        
        let df = APPLEDateFormatter.sharedFormatter
        df.dateFormat = "yyyy"
        
        // 传入时间的年份
        let dateStr = df.stringFromDate(date)
        // 当前时间的年份
        let nowDateStr = df.stringFromDate(nowDate)
        
        return (dateStr as NSString).isEqualToString(nowDateStr)
    }

}
